dataHandling
Data Handling
DataModel provides a very user-friendly API to handle invalid data.
DataModel parses all invalid data to be an instance of Invalid. This eases out the checks in the user's code.
By default if the following data is present, it is automatically identified as invalid:
- null
- undefined
- NaN
- 'null',
- 'undefined',
- 'NaN',
- 'nil',
- 'na',
- ''
1. static setInvalids
Syntax: DataModel.setInvalids(listOfInvalid)
parameters:
- listOfInvalid:
required: true
type: Array<string>
descriptions: invalid sring values to add to the above list
2. static unsetInvalids
Syntax: DataModel.unsetInvalids(listOfInvalid)
parameters:
- listOfInvalid:
required: true
type: Array<string>
descriptions: invalid sring values to remove from the above list
3. static defaultInvalidValue
Syntax: DataModel.defaultInvalidValue(invalidParam)
parameters:
- invalidParam:
required: true
type: string
descriptions: Set actual value of the Invalid instance
4. static isInvalid
Syntax: DataModel.defaults.getInvalidStore.isInvalid(value)
parameters:
- value:
required: true
type: string
description: Checks if the string values exist in the list of Invalids
5. value
Syntax: value()
Overwrites existing value method for a field
Invalid.value()
Returns: The actual value of the Invalid instance
6. toString
Syntax: toString()
Invalid.toString()
Returns: The stringified value of the Invalid
const Datamodel = muze.DataModel;
const data = [
{ words: null, frequency: 2 },
{ words: undefined, frequency: null },
{ words: "wonder", frequency: 12 },
{ words: "wonderful", frequency: "yes" },
];
const schema = [
{ name: "words", type: "dimension" },
{ name: "frequency", type: "measure", defAggFn: "avg" },
];
Datamodel.setInvalids(["wonder"]);
let formattedData = await Datamodel.loadData(data, schema);
let dm1 = new Datamodel(formattedData);
Datamodel.unsetInvalids(["wonder"]);
formattedData = await Datamodel.loadData(data, schema);
let dm2 = new Datamodel(formattedData);
Datamodel.defaultInvalidValue("Not Applicable");
formattedData = await Datamodel.loadData(data, schema);
let dm3 = new Datamodel(formattedData);
Printing the output dm1
, dm2
, dm3
gives:
DM1
words | frequency |
---|---|
_invalid | 2 |
_invalid | NaN |
_invalid | 12 |
wonderful | NaN |
DM2
words | frequency |
---|---|
_invalid | 2 |
_invalid | NaN |
wonder | 12 |
wonderful | NaN |
DM3
words | frequency |
---|---|
Not Applicable | 2 |
Not Applicable | NaN |
wonder | 12 |
wonderful | NaN |